package com.example.musicwebcon.controller;


import com.example.musicwebcon.model.UserInfo;
import com.example.musicwebcon.model.dto.UserInfoDTO;
import com.example.musicwebcon.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/api/user/info")
public class UserInfoController {

    @Autowired
    UserInfoService userInfoService;

    // 获取用户信息
    @GetMapping("/{userId}")
    public UserInfo getUserInfo(@PathVariable String userId) {
        return userInfoService.get(userId);
    }

    // 更新用户信息
    @PutMapping("/{userId}")
    public UserInfo updateUserInfo(@PathVariable String userId, @RequestBody UserInfoDTO userInfoDTO) {
        // 验证请求中的 userId 和传递的 userInfoDTO.id 一致
        if (!userId.equals(userInfoDTO.getInfoId())) {
            throw new IllegalArgumentException("用户ID不匹配！");
        }
        return userInfoService.edit(userInfoDTO);
    }


    // 上传头像
    @PostMapping("/uploadAvatar")
    public Map<String, String> uploadAvatar(@RequestParam("file") MultipartFile file) {
        if (file.isEmpty()) {
            throw new IllegalArgumentException("文件不能为空！");
        }
        try {
            // 保存文件并获取路径
            String avatarUrl = userInfoService.saveAvatar(file);
            // 返回文件的访问路径
            Map<String, String> response = new HashMap<>();
            response.put("url", avatarUrl);
            return response;
        } catch (Exception e) {
            throw new RuntimeException("上传头像失败：" + e.getMessage());
        }
    }
}

